﻿Imports System.Data
Imports System.Data.SqlClient
Partial Class Empleados
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Page.IsPostBack = False Then
            CargarDataListTiposDocumento()
            CargarDataListDepartamentos()
            CargarDataListSucursales()
            CargarDataListJefe()
            CargarDataListCargos()
            CargarGrillaEmpleados()

            If Session("PaginaOrigen") = "DireccionesPersonas" Then
                Dim dr As SqlDataReader
                txtNroDocumento.Text = Session("Nro_documento")
                ddlTipoDocumento.SelectedValue = Convert.ToInt32(Session("id_tipo_documento").ToString)
                dr = PersonaDB.GetPersonaByDocumento(ddlTipoDocumento.SelectedValue, txtNroDocumento.Text)

                While dr.Read()
                    txtNombre.Text = dr("nombre").ToString()
                    txtApellido.Text = dr("apellido").ToString()
                    txtemail.Text = dr("email").ToString()
                    txtFechaNacimiento.Text = dr("fecha_nacimiento")
                End While
                PersonaDB.CerrarConexion()
                habilitarTextBoxes()
                btnNuevo.Enabled = False
            End If




            If txtNroDocumento.Text <> "" Then
                cargarGrillaDireccionesPersona()
            End If

        End If
    End Sub

    
    Sub CargarDataListTiposDocumento()
        Dim ds As New DataSet
        ds = TipoDocumentoDB.GetTiposDocumento
        With ddlTipoDocumento
            .DataSource = ds.Tables("TiposDocumentos")
            .DataValueField = "id_tipo_documento"
            .DataTextField = "tipo_documento"
            .DataBind()
        End With

    End Sub

    Sub CargarDataListDepartamentos()
        Dim ds As New DataSet
        ds = DepartamentoDB.GetDepartamentos

        With ddlDepartamento
            .DataSource = ds.Tables("Departamentos")
            .DataValueField = "id_departamento"
            .DataTextField = "departamento"
            .DataBind()
            .Items.Insert(0, New ListItem("Sin Departamento", "0"))
        End With

    End Sub

    Sub CargarDataListSucursales()
        Dim ds As New DataSet
        ds = SucursalDB.GetSucursales

        With ddlSucursal
            .DataSource = ds.Tables("Sucursales")
            .DataValueField = "id_sucursal"
            .DataTextField = "sucursal"
            .DataBind()
        End With

    End Sub

    Sub CargarDataListJefe()
        Dim ds As New DataSet
        ds = EmpleadosDB.GetEmpleados
        With ddlJefe
            .DataSource = ds.Tables("Empleados")
            .DataValueField = "id_empleado"
            .DataTextField = "apellido_nombre"
            .DataBind()
            .Items.Insert(0, New ListItem("Sin Jefe", "0"))
        End With

    End Sub

    Sub CargarDataListJefeExceptoId()
        Dim ds As New DataSet
        ds = EmpleadosDB.GetEmpleadosExceptoId(gvEmpleados.SelectedDataKey.Values(0).ToString())
        With ddlJefe
            .DataSource = ds.Tables("Empleados")
            .DataValueField = "id_empleado"
            .DataTextField = "apellido_nombre"
            .DataBind()

            .Items.Insert(0, New ListItem("Sin Jefe", "0"))
        End With

    End Sub

    Sub CargarDataListCargos()
        Dim ds As New DataSet
        ds = CargosDB.GetCargos
        With ddlCargo
            .DataSource = ds.Tables("Cargos")
            .DataValueField = "id_cargo"
            .DataTextField = "cargo"
            .DataBind()
        End With

    End Sub

    Sub CargarGrillaEmpleados()
        Dim ds As New DataSet
        ds = EmpleadosDB.GetEmpleados

        gvEmpleados.DataSource = ds.Tables("Empleados")
        gvEmpleados.DataBind()


    End Sub

    Protected Sub gvEmpleados_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvEmpleados.PageIndexChanging
        gvEmpleados.PageIndex = e.NewPageIndex
        CargarGrillaEmpleados()

    End Sub

    Protected Sub gvEmpleados_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvEmpleados.RowDeleting
        Try
            EmpleadosDB.EliminarEmpleado(Convert.ToInt32(gvEmpleados.DataKeys(e.RowIndex).Value.ToString()))
        Catch ex As Exception
            Session("Error") = ex.Message.ToString
            Session("Pagina") = "Empleados.aspx"
            Server.Transfer("Errores.aspx")
        End Try

        limpiar()
        btnNuevo.Enabled = True
        btnAceptar.Enabled = False
        CargarDataListJefe()
        CargarGrillaEmpleados()
    End Sub

    Protected Sub gvEmpleados_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gvEmpleados.SelectedIndexChanged
        txtLegajo.Text = gvEmpleados.SelectedDataKey.Values(0).ToString()
        txtApellido.Text = gvEmpleados.SelectedRow.Cells(1).Text.ToString()
        txtNombre.Text = gvEmpleados.SelectedRow.Cells(2).Text.ToString()
        txtNroDocumento.Text = gvEmpleados.SelectedRow.Cells(4).Text.ToString()
        txtemail.Text = gvEmpleados.SelectedRow.Cells(8).Text.ToString()
        ddlTipoDocumento.SelectedValue = Integer.Parse(gvEmpleados.SelectedDataKey.Values(1).ToString())
        ddlCargo.SelectedValue = gvEmpleados.SelectedDataKey.Values(3).ToString()
        btnAceptar.Enabled = True
        btnNuevaDireccion.Enabled = True

        habilitarTextBoxes()


        ddlSucursal.SelectedValue = gvEmpleados.SelectedDataKey.Values(5).ToString
        If gvEmpleados.SelectedDataKey.Values(6).ToString = "" Then
            ddlDepartamento.SelectedIndex = -1
        Else
            ddlDepartamento.SelectedValue = gvEmpleados.SelectedDataKey.Values(6).ToString
        End If

        txtFechaNacimiento.Text = gvEmpleados.SelectedRow.Cells(5).Text.ToString()
        txtSalario.Text = gvEmpleados.SelectedRow.Cells(7).Text.ToString()
        txtFechaIngreso.Text = gvEmpleados.SelectedRow.Cells(10).Text.ToString()

        CargarDataListJefeExceptoId()
        cargarGrillaDireccionesPersona()

        If gvEmpleados.SelectedDataKey.Values(4).ToString = "" Then 'si no tiene jefe asignado posiciono el combo en "sin jefe"
            ddlJefe.SelectedValue = 0
        Else
            ddlJefe.SelectedValue = Integer.Parse(gvEmpleados.SelectedDataKey.Values(4).ToString)
        End If
    End Sub

    Protected Sub btnNuevo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNuevo.Click
        btnNuevo.Enabled = False
        btnAceptar.Enabled = True
        CargarDataListJefe()
        limpiar()
        habilitarTextBoxes()

    End Sub

    Sub limpiar()


        txtApellido.Text = ""
        txtemail.Text = ""
        txtFechaNacimiento.Text = ""
        txtLegajo.Text = ""
        txtNombre.Text = ""
        txtNroDocumento.Text = ""
        txtSalario.Text = ""
        txtFechaIngreso.Text = ""
        ddlCargo.SelectedIndex = -1
        ddlDepartamento.SelectedIndex = -1
        ddlJefe.SelectedIndex = -1
        ddlSucursal.SelectedIndex = -1
        ddlTipoDocumento.SelectedIndex = -1
        gvEmpleados.SelectedIndex = -1

       
    End Sub

    Sub habilitarTextBoxes()
        txtApellido.ReadOnly = False
        txtemail.ReadOnly = False
        txtFechaNacimiento.ReadOnly = False
        txtLegajo.ReadOnly = False
        txtNombre.ReadOnly = False
        txtNroDocumento.ReadOnly = False
        txtSalario.ReadOnly = False
        txtFechaIngreso.ReadOnly = False
        btnNuevaDireccion.Enabled = True
    End Sub
    Sub DeshabilitarTextBoxes()
        txtApellido.ReadOnly = True
        txtemail.ReadOnly = True
        txtFechaNacimiento.ReadOnly = True
        txtLegajo.ReadOnly = True
        txtNombre.ReadOnly = True
        txtNroDocumento.ReadOnly = True
        txtSalario.ReadOnly = True
        txtFechaIngreso.ReadOnly = True
        btnNuevaDireccion.Enabled = False
    End Sub


    Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        limpiar()
        btnNuevo.Enabled = True
        btnAceptar.Enabled = False
        CargarDataListJefe()

    End Sub

    Protected Sub btnAceptar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
        Try
            If btnNuevo.Enabled = False Then 'si esta deshabilitado es un nuevo empleado
                EmpleadosDB.InsertarEmpleado(ddlDepartamento.SelectedValue, ddlJefe.SelectedValue, txtSalario.Text, txtFechaIngreso.Text, ddlTipoDocumento.SelectedValue, txtNroDocumento.Text, ddlCargo.SelectedValue, ddlSucursal.SelectedValue, txtNombre.Text, txtApellido.Text, txtFechaNacimiento.Text, txtemail.Text)
            Else 'sino es un update
                EmpleadosDB.ActualizarEmpleado(txtLegajo.Text, ddlDepartamento.SelectedValue, ddlJefe.SelectedValue, txtSalario.Text, txtFechaIngreso.Text, ddlTipoDocumento.SelectedValue, txtNroDocumento.Text, ddlCargo.SelectedValue, ddlSucursal.SelectedValue, txtNombre.Text, txtApellido.Text, txtFechaNacimiento.Text, txtemail.Text)
            End If

            CargarGrillaEmpleados()
            CargarDataListJefe()
            limpiar()
            btnNuevo.Enabled = True
            btnAceptar.Enabled = False
            DeshabilitarTextBoxes()

            Session("Nro_documento") = ""
            Session("id_tipo_documento") = ""
            Session("PaginaOrigen") = ""
            Session("Pagina") = ""
        Catch ex As Exception
            Session("Error") = ex.Message.ToString
            Session("Pagina") = "Empleados.aspx"
            Server.Transfer("Errores.aspx")
        End Try
    End Sub

    Sub cargarGrillaDireccionesPersona()
        gvDireccionesPersonas.DataSource = PersonaDB.GetDireccionesPersona(ddlTipoDocumento.SelectedValue, txtNroDocumento.Text)
        gvDireccionesPersonas.DataBind()
    End Sub

    Protected Sub btnNuevaDireccion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNuevaDireccion.Click
        Try
            PersonaDB.InsertarPersona(ddlTipoDocumento.SelectedValue, txtNroDocumento.Text, txtNombre.Text, txtApellido.Text, txtFechaNacimiento.Text, txtemail.Text)
            Session("Nro_Documento") = txtNroDocumento.Text
            Session("Id_tipo_documento") = ddlTipoDocumento.SelectedValue
            Session("Pagina") = "Empleados.aspx"
            Server.Transfer("DireccionesPersonas.aspx")
        Catch ex As Exception
            Session("Error") = ex.Message.ToString
            Session("Pagina") = "Empleados.aspx"
            Server.Transfer("Errores.aspx")
        End Try
        
    End Sub


End Class
